using INSE6260.OnlineBanking.Infrastructure.Domain;
using INSE6260.OnlineBanking.Model.Accounts;
using INSE6260.OnlineBanking.Model.Clients;

namespace INSE6260.OnlineBanking.Model.ClientCard
{
    public interface IClientCardRepository : IRepository<ClientCard>
    {
        ClientCard GetClientCard(string cardNo, string password);

        Account IsValid(LoginInfo loginInfo);

        string GetRandomSecurityQuestion(ClientCard clientCard);

        ClientCard GetClientCard(int accountId);

        void IsSecured(SecurityInfo securityInfo);

        void ChangePassword(ClientCard clientCard);

        void ChangeSecurityQuestions(ClientCard clientCard);

        void BlockCard(int clientCardId);

        bool IsLocked(LoginInfo loginInfo);

        void IsSecured(LoginInfo loginInfo);

        ClientCard GetClientCard(string cardNo);

        bool ExistCardNo(LoginInfo loginInfo);
    }
}
